//package oc.tm.sg.admin.web.service.impl;
//
//import java.util.ArrayList;
//import java.util.List;
//
//import oc.tm.sg.admin.govern.domain.SgInvoke;
//import oc.tm.sg.admin.govern.domain.SgInvokeLineChart;
//import oc.tm.sg.admin.web.service.ChartsService;
//
//import org.apache.commons.lang.time.DateUtils;
//
///**
// * 服务图标控制器
// * @author lry
// */
//public class ChartsServiceImpl implements ChartsService {
//    
//    /**
//     * 根据服务接口获取所有的方法列表
//     * @param dubboInvoke
//     * @return
//     */
//    public List<String> getMethodsByService(SgInvoke dubboInvoke) {
//        //获取Service方法
//        return dubboMonitorService.getMethodsByService(dubboInvoke);
//    }
//
//    public List<SgInvokeLineChart> integrateData(SgInvoke dubboInvoke){
//    	List<SgInvokeLineChart> list=new ArrayList<SgInvokeLineChart>();
//    	ChartsVo vo=new ChartsVo();
//    	
//    	//QPS
//    	List<SgInvokeLineChart> qpsList=getQPS(vo, dubboInvoke);
//    	if(!qpsList.isEmpty()){
//	  		list.addAll(qpsList);
//	   	}
//    	//响应耗时
//    	dubboInvoke.setMethod(null);
//    	List<SgInvokeLineChart> avgMaxList=getAvgMaxRespTime(vo, dubboInvoke);
//    	if(!avgMaxList.isEmpty()){
//	  		list.addAll(avgMaxList);
//	   	}
//    	//成功失败次数
//    	dubboInvoke.setMethod(null);
//    	List<SgInvokeLineChart> sfTimesList=getSuccessFailureTimes(vo, dubboInvoke);
//    	if(!sfTimesList.isEmpty()){
//	  		list.addAll(sfTimesList);
//	   	}
//    	//成功失败率
//    	dubboInvoke.setMethod(null);
//    	List<SgInvokeLineChart> sfRateList=getSuccessFailureRate(vo, dubboInvoke);
//    	if(!sfRateList.isEmpty()){
//	  		list.addAll(sfRateList);
//	   	}
//
//    	return list;
//    }
//    
//    /**
//     * 图一：获取Provider和Consumer的QPS
//     * 
//     * @param invokeDateFrom:调用开始时间
//     * @param invokeDateTo:调用结束时间
//     * @param service:接口
//     * @return Time---Provider的QPS、Consumer的QPS
//     * @return
//     */
//	public List<SgInvokeLineChart> getQPS(SgInvoke dubboInvoke) {
//		return getQPS(null, dubboInvoke);
//	}
//	
//	/**
//     * 图一：获取Provider和Consumer的QPS
//     * 
//     * @param invokeDateFrom:调用开始时间
//     * @param invokeDateTo:调用结束时间
//     * @param service:接口
//     * @return Time---Provider的QPS、Consumer的QPS
//     * @return
//     */
//	public List<SgInvokeLineChart> getQPS(ChartsVo vo,SgInvoke dubboInvoke) {
//		// 计算统计平均请求次数的时间粒度
//        long timeParticle = dubboInvoke.getTimeParticle() / 1000;
//        List<SgInvokeLineChart> dubboInvokeLineChartList = new ArrayList<SgInvokeLineChart>();
//        
//        SgInvokeLineChart artLineChart;
//        List<SgLineChartSeries> artSgLineChartSeriesList;
//        SgLineChartSeries qpsSgLineChartSeries;
//        List<double[]> qpsSeriesDatas;
//        
//        List<String> methods = null;
//        if(vo==null||vo.getMethods().isEmpty()){
//        	methods=dubboMonitorService.getMethodsByService(dubboInvoke);
//        }else{
//        	methods = vo.getMethods();
//        }
//        for (String method : methods) {
//        	dubboInvoke.setMethod(method);
//            dubboInvoke.setType("provider");
//        	/*****************提供者数据********************/
//            artLineChart = new SgInvokeLineChart();
//            artSgLineChartSeriesList = new ArrayList<SgLineChartSeries>();
//            qpsSeriesDatas = new ArrayList<double[]>();
//            qpsSgLineChartSeries = new SgLineChartSeries();
//            qpsSgLineChartSeries.setName(dubboInvoke.getType()+"-每秒请求数");
//            
//            List<SgInvoke> providerSgInvokeDetails = null;
//            if(vo==null||vo.getProviderMap().isEmpty()){
//            	providerSgInvokeDetails=dubboMonitorService.countSgInvoke(dubboInvoke);
//            }else{
//            	providerSgInvokeDetails = vo.getProviderMap().get(method);
//            }
//            for (SgInvoke dubboInvokeDetail : providerSgInvokeDetails) {
//                double artProviderSeriesData=Double.valueOf(String.format("%.4f", dubboInvokeDetail.getSuccess() / timeParticle));
//                qpsSeriesDatas.add(new double[]{dubboInvokeDetail.getInvokeTime(), artProviderSeriesData});
//            }
//            qpsSgLineChartSeries.setData(qpsSeriesDatas);
//            artSgLineChartSeriesList.add(qpsSgLineChartSeries);
//            
//            /*****************消费者数据********************/
//            dubboInvoke.setType("consumer");
//            qpsSeriesDatas = new ArrayList<double[]>();
//            qpsSgLineChartSeries = new SgLineChartSeries();
//            qpsSgLineChartSeries.setName(dubboInvoke.getType()+"-每秒请求数");
//            
//            List<SgInvoke> consumerSgInvokeDetails = null;
//            if(vo==null||vo.getConsumerMap().isEmpty()){
//            	consumerSgInvokeDetails=dubboMonitorService.countSgInvoke(dubboInvoke);
//            }else{
//            	consumerSgInvokeDetails = vo.getConsumerMap().get(method);
//            }
//            for (SgInvoke dubboInvokeDetail : consumerSgInvokeDetails) {
//                double artConsumerSeriesData=Double.valueOf(String.format("%.4f", dubboInvokeDetail.getSuccess() / timeParticle));
//                qpsSeriesDatas.add(new double[]{dubboInvokeDetail.getInvokeTime(),artConsumerSeriesData});
//            }
//            qpsSgLineChartSeries.setData(qpsSeriesDatas);
//            artSgLineChartSeriesList.add(qpsSgLineChartSeries);
//            
//            /*****************作图********************/
//            String startDate=DateUtils.formatShort(dubboInvoke.getInvokeDateFrom());
//            artLineChart.setStartDate(startDate);
//            artLineChart.setChartType("SUCCESS-QPS");//设置图标类型
//            artLineChart.setMethod(method);//设置服务方法
//            artLineChart.setSeriesData(artSgLineChartSeriesList);//设置y轴数据
//            artLineChart.setTitle(method+"-每秒请求数-(Success-QPS)");//设置表标题
//            artLineChart.setSubtitle(dubboInvoke.getService());
//            artLineChart.setXaxisTitle("时间");//设置x轴标题
//            artLineChart.setYaxisTitle("每秒请求数 (次/秒)");//设置y轴的标题
//            artLineChart.setDateUnit("次/秒");
//            dubboInvokeLineChartList.add(artLineChart);
//        }
//        
//        return dubboInvokeLineChartList;
//	}
//    
//	/**
//     * 图二：获取Provider和Consumer的平均响应耗时和最大响应耗时
//     * 
//     * @param invokeDateFrom:调用开始时间
//     * @param invokeDateTo:调用结束时间
//     * @param service:接口
//     * @return Time---Provider平均响应耗时、Provider最大响应耗时、Consumer平均响应耗时、Consumer最大响应耗时
//     */
//	public List<SgInvokeLineChart> getAvgMaxRespTime(SgInvoke dubboInvoke) {
//		return getAvgMaxRespTime(null, dubboInvoke);
//	}
//    /**
//     * 图二：获取Provider和Consumer的平均响应耗时和最大响应耗时
//     * 
//     * @param invokeDateFrom:调用开始时间
//     * @param invokeDateTo:调用结束时间
//     * @param service:接口
//     * @return Time---Provider平均响应耗时、Provider最大响应耗时、Consumer平均响应耗时、Consumer最大响应耗时
//     */
//	public List<SgInvokeLineChart> getAvgMaxRespTime(ChartsVo vo,SgInvoke dubboInvoke) {
//        List<SgInvokeLineChart> dubboInvokeLineChartList = new ArrayList<SgInvokeLineChart>();
//        
//        SgInvokeLineChart artLineChart;
//        List<SgLineChartSeries> artSgLineChartSeriesList;
//        //平均响应耗时
//        SgLineChartSeries elapsedSgLineChartSeries;
//        List<double[]> elapsedSeriesDatas;
//        //最大响应耗时
//        SgLineChartSeries maxElapsedSgLineChartSeries;
//        List<double[]> maxElapsedSeriesDatas;
//        //①
//        
//        List<String> methods = null;
//        if(vo==null||vo.getMethods().isEmpty()){
//        	methods=dubboMonitorService.getMethodsByService(dubboInvoke);
//        }else{
//        	methods = vo.getMethods();
//        }
//        for (String method : methods) {
//        	dubboInvoke.setMethod(method);
//            dubboInvoke.setType("provider");
//            
//        	/*****************提供者数据********************/
//            artLineChart = new SgInvokeLineChart();
//            artSgLineChartSeriesList = new ArrayList<SgLineChartSeries>();
//            //平均响应耗时
//            elapsedSeriesDatas = new ArrayList<double[]>();
//            elapsedSgLineChartSeries = new SgLineChartSeries();
//            elapsedSgLineChartSeries.setName(dubboInvoke.getType()+"-平均响应耗时");
//            //最大响应耗时
//            maxElapsedSeriesDatas = new ArrayList<double[]>();
//            maxElapsedSgLineChartSeries = new SgLineChartSeries();
//            maxElapsedSgLineChartSeries.setName(dubboInvoke.getType()+"-最大响应耗时");
//            
//            List<SgInvoke> providerSgInvokeDetails = null;
//            if(vo==null||vo.getProviderMap().isEmpty()){
//            	providerSgInvokeDetails=dubboMonitorService.countSgInvoke(dubboInvoke);
//            }else{
//            	providerSgInvokeDetails = vo.getProviderMap().get(method);
//            }
//            for (SgInvoke dubboInvokeDetail : providerSgInvokeDetails) {
//                //平均响应耗时
//                double artProviderSeriesData=Double.valueOf(String.format("%.4f", dubboInvokeDetail.getElapsed()));
//                elapsedSeriesDatas.add(new double[]{dubboInvokeDetail.getInvokeTime(), artProviderSeriesData});
//                //最大响应耗时
//                double respMaxTimeProviderSeriesData=Double.valueOf(String.format("%.4f", Double.valueOf(dubboInvokeDetail.getMaxElapsed())));
//                maxElapsedSeriesDatas.add(new double[]{dubboInvokeDetail.getInvokeTime(), respMaxTimeProviderSeriesData});
//            }
//            //平均响应耗时
//            elapsedSgLineChartSeries.setData(elapsedSeriesDatas);
//            artSgLineChartSeriesList.add(elapsedSgLineChartSeries);
//            //最大响应耗时
//            maxElapsedSgLineChartSeries.setData(maxElapsedSeriesDatas);
//            artSgLineChartSeriesList.add(maxElapsedSgLineChartSeries);
//            
//            /*****************消费者数据********************/
//            dubboInvoke.setType("consumer");
//            //平均响应耗时
//            elapsedSeriesDatas = new ArrayList<double[]>();
//            elapsedSgLineChartSeries = new SgLineChartSeries();
//            elapsedSgLineChartSeries.setName(dubboInvoke.getType()+"-平均响应耗时");
//            //最大响应耗时
//            maxElapsedSeriesDatas = new ArrayList<double[]>();
//            maxElapsedSgLineChartSeries = new SgLineChartSeries();
//            maxElapsedSgLineChartSeries.setName(dubboInvoke.getType()+"-最大响应耗时");
//            
//            List<SgInvoke> consumerSgInvokeDetails = null;
//            if(vo==null||vo.getConsumerMap().isEmpty()){
//            	consumerSgInvokeDetails=dubboMonitorService.countSgInvoke(dubboInvoke);
//            }else{
//            	consumerSgInvokeDetails = vo.getConsumerMap().get(method);
//            }
//            for (SgInvoke dubboInvokeDetail : consumerSgInvokeDetails) {
//                //平均响应耗时
//                double artConsumerSeriesData=Double.valueOf(String.format("%.4f", dubboInvokeDetail.getElapsed()));
//                elapsedSeriesDatas.add(new double[]{dubboInvokeDetail.getInvokeTime(),artConsumerSeriesData});
//                //最大响应耗时
//                double respMaxTimeConsumerSeriesData=Double.valueOf(String.format("%.4f", Double.valueOf(dubboInvokeDetail.getMaxElapsed())));
//                maxElapsedSeriesDatas.add(new double[]{dubboInvokeDetail.getInvokeTime(),respMaxTimeConsumerSeriesData});
//            }
//            //平均响应耗时
//            elapsedSgLineChartSeries.setData(elapsedSeriesDatas);
//            artSgLineChartSeriesList.add(elapsedSgLineChartSeries);
//            //最大响应耗时
//            maxElapsedSgLineChartSeries.setData(maxElapsedSeriesDatas);
//            artSgLineChartSeriesList.add(maxElapsedSgLineChartSeries);
//            
//            /*****************作图********************/
//            String startDate=DateUtils.formatShort(dubboInvoke.getInvokeDateFrom());
//            artLineChart.setStartDate(startDate);
//            artLineChart.setChartType("RESPONSE-TIME-ART");//设置图标类型
//            artLineChart.setMethod(method);//设置服务方法
//            artLineChart.setSeriesData(artSgLineChartSeriesList);//设置y轴数据
//            artLineChart.setTitle(method+"-响应耗时(Avg-Max-RespTime)");//设置表标题
//            artLineChart.setSubtitle(dubboInvoke.getService());
//            artLineChart.setXaxisTitle("时间");//设置x轴标题
//            artLineChart.setYaxisTitle("响应耗时 (毫秒/次)");//设置y轴的标题
//            artLineChart.setDateUnit("毫秒/次");
//            dubboInvokeLineChartList.add(artLineChart);
//        }
//        
//        return dubboInvokeLineChartList;
//	}
//	/**
//     * 图三：获取Provider和Consumer的成功/失败笔数
//     * 
//     * @param invokeDateFrom:调用开始时间
//     * @param invokeDateTo:调用结束时间
//     * @param service:接口
//     * @return Time---Provider成功笔数、Provider失败笔数、Consumer成功笔数、Consumer失败笔数
//     */
//	public List<SgInvokeLineChart> getSuccessFailureTimes(SgInvoke dubboInvoke) {
//		return getSuccessFailureTimes(null, dubboInvoke);
//	}
//	/**
//     * 图三：获取Provider和Consumer的成功/失败笔数
//     * 
//     * @param invokeDateFrom:调用开始时间
//     * @param invokeDateTo:调用结束时间
//     * @param service:接口
//     * @return Time---Provider成功笔数、Provider失败笔数、Consumer成功笔数、Consumer失败笔数
//     */
//	public List<SgInvokeLineChart> getSuccessFailureTimes(ChartsVo vo,SgInvoke dubboInvoke) {
//        List<SgInvokeLineChart> dubboInvokeLineChartList = new ArrayList<SgInvokeLineChart>();
//        
//        SgInvokeLineChart artLineChart;
//        List<SgLineChartSeries> artSgLineChartSeriesList;
//        //成功笔数
//        SgLineChartSeries elapsedSgLineChartSeries;
//        List<double[]> elapsedSeriesDatas;
//        //失败笔数
//        SgLineChartSeries maxElapsedSgLineChartSeries;
//        List<double[]> maxElapsedSeriesDatas;
//        //①
//        
//        List<String> methods = null;
//        if(vo==null||vo.getMethods().isEmpty()){
//        	methods=dubboMonitorService.getMethodsByService(dubboInvoke);
//        }else{
//        	methods = vo.getMethods();
//        }
//        for (String method : methods) {
//        	dubboInvoke.setMethod(method);
//            dubboInvoke.setType("provider");
//        	/*****************提供者数据********************/
//            artLineChart = new SgInvokeLineChart();
//            artSgLineChartSeriesList = new ArrayList<SgLineChartSeries>();
//            //成功笔数
//            elapsedSeriesDatas = new ArrayList<double[]>();
//            elapsedSgLineChartSeries = new SgLineChartSeries();
//            elapsedSgLineChartSeries.setName(dubboInvoke.getType()+"-成功笔数");
//            //失败笔数
//            maxElapsedSeriesDatas = new ArrayList<double[]>();
//            maxElapsedSgLineChartSeries = new SgLineChartSeries();
//            maxElapsedSgLineChartSeries.setName(dubboInvoke.getType()+"-失败笔数");
//            
//            List<SgInvoke> providerSgInvokeDetails = null;
//            if(vo==null||vo.getProviderMap().isEmpty()){
//            	providerSgInvokeDetails=dubboMonitorService.countSgInvoke(dubboInvoke);
//            }else{
//            	providerSgInvokeDetails = vo.getProviderMap().get(method);
//            }
//            for (SgInvoke dubboInvokeDetail : providerSgInvokeDetails) {
//                //成功笔数
//                double artProviderSeriesData=Double.valueOf(String.format("%.4f", dubboInvokeDetail.getSuccess()));
//                elapsedSeriesDatas.add(new double[]{dubboInvokeDetail.getInvokeTime(), artProviderSeriesData});
//                //失败笔数
//                double respMaxTimeProviderSeriesData=Double.valueOf(String.format("%.4f", Double.valueOf(dubboInvokeDetail.getFailure())));
//                maxElapsedSeriesDatas.add(new double[]{dubboInvokeDetail.getInvokeTime(), respMaxTimeProviderSeriesData});
//            }
//            //成功笔数
//            elapsedSgLineChartSeries.setData(elapsedSeriesDatas);
//            artSgLineChartSeriesList.add(elapsedSgLineChartSeries);
//            //失败笔数
//            maxElapsedSgLineChartSeries.setData(maxElapsedSeriesDatas);
//            artSgLineChartSeriesList.add(maxElapsedSgLineChartSeries);
//            
//            /*****************消费者数据********************/
//            dubboInvoke.setType("consumer");
//            //成功笔数
//            elapsedSeriesDatas = new ArrayList<double[]>();
//            elapsedSgLineChartSeries = new SgLineChartSeries();
//            elapsedSgLineChartSeries.setName(dubboInvoke.getType()+"-成功笔数");
//            //失败笔数
//            maxElapsedSeriesDatas = new ArrayList<double[]>();
//            maxElapsedSgLineChartSeries = new SgLineChartSeries();
//            maxElapsedSgLineChartSeries.setName(dubboInvoke.getType()+"-失败笔数");
//            
//            List<SgInvoke> consumerSgInvokeDetails = null;
//            if(vo==null||vo.getConsumerMap().isEmpty()){
//            	consumerSgInvokeDetails=dubboMonitorService.countSgInvoke(dubboInvoke);
//            }else{
//            	consumerSgInvokeDetails = vo.getConsumerMap().get(method);
//            }
//            for (SgInvoke dubboInvokeDetail : consumerSgInvokeDetails) {
//                //成功笔数
//                double artConsumerSeriesData=Double.valueOf(String.format("%.4f", dubboInvokeDetail.getSuccess()));
//                elapsedSeriesDatas.add(new double[]{dubboInvokeDetail.getInvokeTime(),artConsumerSeriesData});
//                //失败笔数
//                double respMaxTimeConsumerSeriesData=Double.valueOf(String.format("%.4f", Double.valueOf(dubboInvokeDetail.getFailure())));
//                maxElapsedSeriesDatas.add(new double[]{dubboInvokeDetail.getInvokeTime(),respMaxTimeConsumerSeriesData});
//            }
//            //成功笔数
//            elapsedSgLineChartSeries.setData(elapsedSeriesDatas);
//            artSgLineChartSeriesList.add(elapsedSgLineChartSeries);
//            //失败笔数
//            maxElapsedSgLineChartSeries.setData(maxElapsedSeriesDatas);
//            artSgLineChartSeriesList.add(maxElapsedSgLineChartSeries);
//            
//            /*****************作图********************/
//            String startDate=DateUtils.formatShort(dubboInvoke.getInvokeDateFrom());
//            artLineChart.setStartDate(startDate);
//            artLineChart.setChartType("SUCCESS-FAILURE-TIMES");//设置图标类型
//            artLineChart.setMethod(method);//设置服务方法
//            artLineChart.setSeriesData(artSgLineChartSeriesList);//设置y轴数据
//            artLineChart.setTitle(method+"-供应和消费成功/失败笔数-(Succ-Fail-Times)");//设置表标题
//            artLineChart.setSubtitle(dubboInvoke.getService());
//            artLineChart.setXaxisTitle("时间");//设置x轴标题
//            artLineChart.setYaxisTitle("服务供应和消费成功/失败笔数 (笔)");//设置y轴的标题
//            artLineChart.setDateUnit("笔");
//            dubboInvokeLineChartList.add(artLineChart);
//        }
//        
//        return dubboInvokeLineChartList;
//	}
//
//	/**
//     * 图四：获取Provider和Consumer的成功/失败率
//     * 
//     * @param invokeDateFrom:调用开始时间
//     * @param invokeDateTo:调用结束时间
//     * @param service:接口
//     * @return Time---Provider成功率、Provider失败率、Consumer成功率、Consumer失败率
//     */
//	public List<SgInvokeLineChart> getSuccessFailureRate(SgInvoke dubboInvoke) {
//		return getSuccessFailureRate(null, dubboInvoke);
//	}
//	
//	/**
//     * 图四：获取Provider和Consumer的成功/失败率
//     * 
//     * @param invokeDateFrom:调用开始时间
//     * @param invokeDateTo:调用结束时间
//     * @param service:接口
//     * @return Time---Provider成功率、Provider失败率、Consumer成功率、Consumer失败率
//     */
//	public List<SgInvokeLineChart> getSuccessFailureRate(ChartsVo vo,SgInvoke dubboInvoke) {
//        List<SgInvokeLineChart> dubboInvokeLineChartList = new ArrayList<SgInvokeLineChart>();
//        
//        SgInvokeLineChart artLineChart;
//        List<SgLineChartSeries> artSgLineChartSeriesList;
//        //成功率
//        SgLineChartSeries elapsedSgLineChartSeries;
//        List<double[]> elapsedSeriesDatas;
//        //失败率
//        SgLineChartSeries maxElapsedSgLineChartSeries;
//        List<double[]> maxElapsedSeriesDatas;
//        //①
//        
//        List<String> methods = null;
//        if(vo==null||vo.getMethods().isEmpty()){
//        	methods=dubboMonitorService.getMethodsByService(dubboInvoke);
//        }else{
//        	methods = vo.getMethods();
//        }
//        for (String method : methods) {
//        	dubboInvoke.setMethod(method);
//            dubboInvoke.setType("provider");
//        	/*****************提供者数据********************/
//            artLineChart = new SgInvokeLineChart();
//            artSgLineChartSeriesList = new ArrayList<SgLineChartSeries>();
//            //成功率
//            elapsedSeriesDatas = new ArrayList<double[]>();
//            elapsedSgLineChartSeries = new SgLineChartSeries();
//            elapsedSgLineChartSeries.setName(dubboInvoke.getType()+"-成功率");
//            //失败率
//            maxElapsedSeriesDatas = new ArrayList<double[]>();
//            maxElapsedSgLineChartSeries = new SgLineChartSeries();
//            maxElapsedSgLineChartSeries.setName(dubboInvoke.getType()+"-失败率");
//            
//            List<SgInvoke> providerSgInvokeDetails = null;
//            if(vo==null||vo.getProviderMap().isEmpty()){
//            	providerSgInvokeDetails=dubboMonitorService.countSgInvoke(dubboInvoke);
//            }else{
//            	providerSgInvokeDetails = vo.getProviderMap().get(method);
//            }
//            for (SgInvoke dubboInvokeDetail : providerSgInvokeDetails) {
//                //成功率
//                double artProviderSeriesData=Double.valueOf(String.format("%.4f", dubboInvokeDetail.getSuccessRate()));
//                elapsedSeriesDatas.add(new double[]{dubboInvokeDetail.getInvokeTime(), artProviderSeriesData});
//                //失败率
//                double respMaxTimeProviderSeriesData=Double.valueOf(String.format("%.4f", Double.valueOf(dubboInvokeDetail.getFailureRate())));
//                maxElapsedSeriesDatas.add(new double[]{dubboInvokeDetail.getInvokeTime(), respMaxTimeProviderSeriesData});
//            }
//            //成功率
//            elapsedSgLineChartSeries.setData(elapsedSeriesDatas);
//            artSgLineChartSeriesList.add(elapsedSgLineChartSeries);
//            //失败率
//            maxElapsedSgLineChartSeries.setData(maxElapsedSeriesDatas);
//            artSgLineChartSeriesList.add(maxElapsedSgLineChartSeries);
//            
//            /*****************消费者数据********************/
//            dubboInvoke.setType("consumer");
//            //成功率
//            elapsedSeriesDatas = new ArrayList<double[]>();
//            elapsedSgLineChartSeries = new SgLineChartSeries();
//            elapsedSgLineChartSeries.setName(dubboInvoke.getType()+"-成功率");
//            //失败率
//            maxElapsedSeriesDatas = new ArrayList<double[]>();
//            maxElapsedSgLineChartSeries = new SgLineChartSeries();
//            maxElapsedSgLineChartSeries.setName(dubboInvoke.getType()+"-失败率");
//            
//            List<SgInvoke> consumerSgInvokeDetails = null;
//            if(vo==null||vo.getConsumerMap().isEmpty()){
//            	consumerSgInvokeDetails=dubboMonitorService.countSgInvoke(dubboInvoke);
//            }else{
//            	consumerSgInvokeDetails = vo.getConsumerMap().get(method);
//            }
//            for (SgInvoke dubboInvokeDetail : consumerSgInvokeDetails) {
//                //成功率
//                double artConsumerSeriesData=Double.valueOf(String.format("%.4f", dubboInvokeDetail.getSuccessRate()));
//                elapsedSeriesDatas.add(new double[]{dubboInvokeDetail.getInvokeTime(),artConsumerSeriesData});
//                //失败率
//                double respMaxTimeConsumerSeriesData=Double.valueOf(String.format("%.4f", Double.valueOf(dubboInvokeDetail.getFailureRate())));
//                maxElapsedSeriesDatas.add(new double[]{dubboInvokeDetail.getInvokeTime(),respMaxTimeConsumerSeriesData});
//            }
//            //成功率
//            elapsedSgLineChartSeries.setData(elapsedSeriesDatas);
//            artSgLineChartSeriesList.add(elapsedSgLineChartSeries);
//            //失败率
//            maxElapsedSgLineChartSeries.setData(maxElapsedSeriesDatas);
//            artSgLineChartSeriesList.add(maxElapsedSgLineChartSeries);
//            
//            /*****************作图********************/
//            String startDate=DateUtils.formatShort(dubboInvoke.getInvokeDateFrom());
//            artLineChart.setStartDate(startDate);
//            artLineChart.setChartType("SUCCESS-FAILURE-RATE");//设置图标类型
//            artLineChart.setMethod(method);//设置服务方法
//            artLineChart.setSeriesData(artSgLineChartSeriesList);//设置y轴数据
//            artLineChart.setTitle(method+"-供应和消费成功/失败率-(Succ-Fail-Rate)");//设置表标题
//            artLineChart.setSubtitle(dubboInvoke.getService());
//            artLineChart.setXaxisTitle("时间");//设置x轴标题
//            artLineChart.setYaxisTitle("服务供应和消费成功/失败率 (%)");//设置y轴的标题
//            artLineChart.setDateUnit("%");
//            dubboInvokeLineChartList.add(artLineChart);
//        }
//        
//        return dubboInvokeLineChartList;
//	}
//
//	public List<SgInvokeLineChart> getCPRespTimeTOPN(SgInvoke dubboInvoke, Integer topn) {
//		return null;
//	}
//
//	public List<SgInvokeLineChart> getCPRespSuccessNumTOPN(SgInvoke dubboInvoke, Integer topn) {
//		return null;
//	}
//
//	public List<SgInvokeLineChart> getCPRespFailureNumTOPN(SgInvoke dubboInvoke, Integer topn) {
//		return null;
//	}
//
//	public List<SgInvokeLineChart> getConsumerMaxElapsedTOPN(SgInvoke dubboInvoke, Integer topn) {
//		return null;
//	}
//
//	public List<SgInvokeLineChart> getConsumerSuccessNumTOPN(SgInvoke dubboInvoke, Integer topn) {
//		return null;
//	}
//
//	public List<SgInvokeLineChart> getConsumerFailureNumTOPN(SgInvoke dubboInvoke, Integer topn) {
//		return null;
//	}
//    
//}
